home *** CD-ROM | disk | FTP | other *** search
/ The X-Philes (2nd Revision) / The X-Philes Number 1 (1995).iso / xphiles / hp48hor2 / csim261.src < prev    next >
Text File  |  1992-08-18  |  16KB  |  878 lines

  1. %%HP:T(3)A(R)F(.);
  2. DIR
  3. @ --------------------------------------------------------
  4. @ Title   : CSIM (a simple circuit simulator for the HP48)
  5. @ Version : 2.61
  6. @ Author  : Per Stenius
  7. @ LastEdit: 16.12.91
  8. @ Copyright Per Stenius (1991)
  9. @ --------------------------------------------------------
  10.  
  11. CST
  12. {Csim View node ymin ymax CLRSC
  13. outp CIR\-> CIR \->CIR Setup dc
  14. w ac A\->L t tstep tran
  15. X G C Cc W Wlist
  16. Euler iterdc}
  17.  
  18. Csim
  19. \<<
  20.   "  Csim_HP-48 2.61
  21.  
  22.  
  23.  (c) Per Stenius 1991" CLLCD 2 DISP
  24.   1 WAIT CLLCD
  25.   "Setup?" "Y" INPUT
  26.   IF
  27.   "Y" SAME
  28.   THEN
  29.     "Wait..." CLLCD 1 DISP
  30.     IF
  31.     DEPTH 0 ==
  32.     THEN
  33.       CIR CIR\->
  34.     END
  35.     Setup
  36.   END
  37.   "Analysis? (D, A, T)" "" INPUT
  38.   \-> analysis
  39.   \<<
  40.     CASE
  41.  
  42.       analysis "D" SAME
  43.       THEN
  44.         dc
  45.       END
  46.  
  47.       analysis "A" SAME
  48.       THEN
  49.         "Sweep range?" {":wstart:
  50. :wstop:" { 1 0 } V } INPUT
  51.         OBJ\-> \-> wstart wstop
  52.         \<<
  53.           wstop wstart - 130 /
  54.           'wstep' STO
  55.           wstart 'w' STO
  56.           'acplot' STEQ
  57.           wstart wstop XRNG
  58.           ymin ymax YRNG
  59.           'w' INDEP
  60.           DRAX                @ Add ERASE to clear PICT
  61.           {(0,0) "jw" "f(jw)"} AXES LABEL
  62.           DRAW GRAPH
  63.         \>>
  64.       END
  65.  
  66.       analysis "T" SAME
  67.       THEN
  68.         "Sweep range?" {":tstart:0
  69. :tstep:0
  70. :tstop:1" { 3 0 } V } INPUT
  71.         OBJ\->
  72.         \-> tstart ttstep tstop
  73.         \<<
  74.           IF
  75.           ttstep 0 ==
  76.           THEN
  77.             tstop tstart - 130 /
  78.             'tstep' STO
  79.           ELSE
  80.             ttstep 'tstep' STO
  81.           END
  82.           tstart tstep 130 * XRNG
  83.           ymin ymax YRNG
  84.           't' INDEP
  85.           DRAX                @ Add ERASE to clear PICT
  86.           {(0,0) "t" "f(t)"} AXES LABEL
  87.           IF
  88.           Euler NOT
  89.           THEN
  90.             tstep 2 / 'tstep' STO
  91.             'tranTR' STEQ
  92.           ELSE
  93.             'tranBE' STEQ
  94.           END
  95.           G tstep * C + INV
  96.           'iChG' STO
  97.           DRAW GRAPH
  98.         \>>
  99.       END
  100.     END
  101.   \>>
  102. \>>
  103.  
  104. outp                          @ Enables user defined
  105. \<< node GET                  @ calculations
  106. \>>
  107.  
  108. dc
  109. \<<                           @ DC analysis
  110.  Wlist\->W W checkCc
  111.  Gdc / DUP 'X' STO            @ The result vector is
  112. \>>                           @ returned to the stack
  113.  
  114. checkCc
  115. \<<
  116.  Cc C\->R DUP 
  117.  IF
  118.  CNRM NOT SWAP RNRM NOT AND
  119.  THEN
  120.    G + 'Gdc' STO
  121.  ELSE
  122.    "Im{Cc} \=/ 0 IN DC" DOERR 
  123.  END
  124. \>>
  125.  
  126. iterdc                        @ Iterative DC analysis, max 100
  127. \<< 0 \-> i                   @ iterations
  128.   \<<
  129.     DO
  130.       X dc
  131.     UNTIL
  132.     ==
  133.     'i' INCR 100 > OR
  134.     END
  135.     IF
  136.     i 100 >
  137.     THEN
  138.       "100 ITERATIONS
  139. CHECK CONVERGENCE" 1 DISP 1 FREEZE
  140.     ELSE
  141.       dc
  142.     END
  143.   \>>
  144. \>>
  145.  
  146. ac
  147. \<<
  148.   Wlist\->W W G C w * R\->C   @ AC analysis
  149.   Cc + / DUP 'X' STO          @ The result vector is
  150. \>>                           @ returned to the stack
  151.  
  152. tran
  153. \<<                           @ Trapezoidal approx.
  154.  iChG
  155.  W Wlist\->W W + tstep 2 / *
  156.  C G tstep 2 / * - X * + *
  157.  DUP 'X' STO
  158.  t tstep + 't' STO
  159. \>>
  160.  
  161. acplot
  162. \<<
  163.   ac outp                     @ outp is always called last
  164.   wstep w + 'w' STO           @ in a plotting program
  165. \>>
  166.  
  167. tranBE
  168. \<<
  169.  iChG                         @ Inverse Euler approx.
  170.  Wlist\->W W tstep *          @ Returns the next result to stack
  171.  C X * + *                    @ Used as default when plotting
  172.  DUP 'X' STO outp             @ outp is always called last
  173. \>>
  174.  
  175. tranTR
  176. \<<                           @ Trapezoidal approx.
  177.  iChG
  178.  W Wlist\->W W + tstep *
  179.  C G tstep * - X * + *
  180.  DUP 'X' STO outp             @ outp is always called last
  181. \>>
  182.  
  183. Wlist\->W                     @ Functional values -> numerical
  184. \<<
  185.  Wlist LIST\-> 1 SWAP
  186.  START
  187.     \->NUM
  188.     dim ROLL
  189.  NEXT
  190.  dim 1 getpos \->ARRY
  191.  'W' STO
  192. \>>
  193.  
  194. Setup
  195. \<<
  196.   -3 CF                       @ Set symbolic mode
  197.   -17 SF -18 CF               @ and radian mode
  198.   0 't' STO
  199.   0 'ndim' STO
  200.   0 'bdim' STO
  201.   DEPTH 1 SWAP
  202.   START
  203.      1 GETI
  204.      \-> cmptype
  205.      \<<
  206.        IF
  207.        cmptype 'm' SAME NOT  @ Not a component!
  208.        THEN
  209.          cmptype
  210.          incbdim GETI
  211.          incndim GETI
  212.          incndim
  213.          IF
  214.          cmptype 'O' SAME    @ Components with 4 nodes
  215.          cmptype 'M' SAME OR @ New two-ports: add type here!
  216.          cmptype 'T' SAME OR
  217.          cmptype 'g' SAME OR
  218.          cmptype 'r' SAME OR
  219.          cmptype 'a' SAME OR
  220.          cmptype 'u' SAME OR
  221.          cmptype 'y' SAME OR
  222.          cmptype 'z' SAME OR
  223.          cmptype 'A' SAME OR
  224.          THEN
  225.            GETI incndim
  226.            GETI incndim
  227.          END
  228.        END
  229.        DROP DEPTH ROLL
  230.      \>>
  231.   NEXT
  232.   ndim bdim + 'dim' STO
  233.   [[ 0 ]] dim DUP getpos RDM DUP
  234.   'G' STO 'C' STO
  235.   [[ (0,0) ]] dim DUP getpos RDM
  236.   'Cc' STO
  237.   [[ 0 ]] dim 1 getpos RDM
  238.   DUP 'X' STO 'W' STO
  239.   1 dim
  240.   START
  241.      0
  242.   NEXT
  243.   dim \->LIST 'Wlist' STO
  244.   DEPTH 1 SWAP
  245.   START
  246.      IFERR
  247.         DUP 1 GET
  248.         loadmatrix
  249.         DEPTH ROLL
  250.      THEN
  251.         "SYNTAX ERROR" DOERR
  252.      END
  253.   NEXT
  254.   DEPTH \->LIST 'CIR' STO
  255. \>>
  256.  
  257. loadmatrix
  258. \<< \-> cmptype
  259.   \<<
  260.     DUP 2 GET
  261.     2 PICK 3 GET              @ cmp n1 n2
  262.     CASE
  263.        cmptype 'J' SAME       @ Ideal current source
  264.        THEN
  265.           getval
  266.           putJ
  267.        END
  268.  
  269.        cmptype 'E' SAME       @ Ideal voltage source
  270.        THEN
  271.           getval
  272.           getbranch
  273.           putE
  274.        END
  275.  
  276.        cmptype 'G' SAME       @ Conductor and capacitor
  277.        cmptype 'C' SAME OR
  278.        THEN
  279.           getval
  280.           cmptype putGC
  281.        END
  282.  
  283.        cmptype 'R' SAME 
  284.        cmptype 'L' SAME OR    @ Resistor and inductor
  285.        THEN
  286.           getval
  287.           getbranch
  288.           IF
  289.           cmptype 'R' SAME
  290.           THEN
  291.             'G'
  292.             putRL
  293.           ELSE
  294.             putL
  295.           END
  296.        END
  297.  
  298.        cmptype 'Z' SAME       @ Constant valued impedance
  299.        THEN
  300.           getval INV
  301.           putY
  302.        END
  303.  
  304.        cmptype 'Y' SAME       @ Constant valued admittance
  305.        THEN
  306.           getval
  307.           putY
  308.        END
  309.  
  310.        cmptype 'S' SAME       @ Short-circuit
  311.        THEN
  312.           getval              @ n1 n2 branch          
  313.           putS
  314.        END
  315.  
  316.        cmptype 'O' SAME       @ Ideal opamp
  317.        THEN
  318.           getn34
  319.           5 PICK 6 GET        @ n1 n2 n3 n4 branch
  320.           putO
  321.        END
  322.  
  323.        cmptype 'M' SAME       @ Transformer
  324.        THEN
  325.           getn34vb
  326.           7 PICK 8 GET
  327.           8 PICK 9 GET
  328.           9 PICK 10 GET       @ n1 n2 n3 n4 l1 l2 m b1 b2
  329.           putM
  330.        END
  331.  
  332.        cmptype 'T' SAME       @ Lossless transmission line
  333.        THEN
  334.           getn34vb            @ n1 n2 n3 n4 ll Zo
  335.           putT
  336.        END
  337.  
  338.        cmptype 'm' SAME       @ Mutual inductance
  339.        THEN
  340.           getval
  341.           putm                @ b1 b2 val
  342.        END
  343.  
  344.        cmptype 'g' SAME       @ VCCS
  345.        THEN
  346.           getn34
  347.           5 PICK 6 GET        @ n1 n2 n3 n4 val
  348.           putg
  349.        END
  350.  
  351.        cmptype 'r' SAME       @ CCVS
  352.        THEN
  353.           getn34vb
  354.           7 PICK 8 GET        @ n1 n2 n3 n4 val b1 b2
  355.           putr
  356.        END
  357.  
  358.        cmptype 'p' SAME       @ CCVS version 2
  359.        THEN
  360.           getvb1b2
  361.           putp                @ n3 n4 val b1 b2
  362.        END
  363.  
  364.        cmptype 'a' SAME       @ CCCS
  365.        THEN
  366.           getn34vb            @ n1 n2 n3 n4 val branch
  367.           puta
  368.        END
  369.  
  370.        cmptype 'b' SAME       @ CCVS version 2
  371.        THEN
  372.           getn34
  373.           putb                @ n3 n4 val b
  374.        END
  375.  
  376.        cmptype 'u' SAME       @ VCVS
  377.        THEN
  378.           getn34vb            @ n1 n2 n3 n4 val branch
  379.           putu
  380.        END
  381.  
  382.        cmptype 'z' SAME       @ z-parameters (two-port)
  383.        THEN
  384.           getn34v1234         @ n1 n2 n3 n4 y11 y12 y21 y22
  385.           {2 2} \->ARRY INV
  386.           ARRY\-> DROP
  387.           puty
  388.        END
  389.  
  390.        cmptype 'y' SAME       @ y-parameters (two-port)
  391.        THEN
  392.           getn34v1234         @ n1 n2 n3 n4 y11 y12 y21 y22
  393.           puty
  394.        END
  395.  
  396.        cmptype 'A' SAME       @ ABCD-parameters (two-port)
  397.        THEN
  398.           getn34v1234         @ n1 n2 n3 n4 A B C D
  399.           ABCDtoy
  400.           puty
  401.        END
  402.                               @ Add new components here!
  403.     END
  404.   \>>
  405. \>>
  406.  
  407. ABCDtoy
  408. \<< \-> A B C D
  409.   \<<
  410.     D B /
  411.     C D A * B / -
  412.     B INV NEG
  413.     A B /
  414.   \>>
  415. \>>
  416.  
  417. putGC                         @ Routines to load component
  418. \<< \-> n1 n2 value type      @ stamp into matrix (or vector)
  419.   \<<                         @ Add new stamps here!
  420.     value n2 n1 checknodes
  421.     type RCL
  422.     n1 n2 value puty2
  423.     type STO
  424.   \>>
  425. \>>
  426.  
  427. putRL
  428. \<< \-> n1 n2 value branch matr
  429.   \<<
  430.     branch n2 n1 checknodes   @ Enables short-circuits
  431.     n1 n2 branch putL2
  432.     matr RCL
  433.     branch DUP value NEG putmatrix
  434.     matr STO
  435.   \>>
  436. \>>
  437.  
  438. putJ
  439. \<< \-> n1 n2 value
  440.   \<< 
  441.     value n2 n1 checknodes
  442.     Wlist DUP
  443.     IF n1 0 >
  444.     THEN
  445.        n1 GET value - n1 SWAP
  446.        PUT DUP
  447.     END
  448.     IF n2 0 >
  449.     THEN
  450.        n2 GET value + n2 SWAP PUT
  451.     ELSE
  452.        DROP
  453.     END
  454.     'Wlist' STO
  455.   \>>
  456. \>>
  457.  
  458. putE
  459. \<< \-> n1 n2 value branch
  460.   \<<
  461.     value n2 n1 checknodes
  462.     n1 n2 0 branch putL
  463.     Wlist DUP
  464.     branch GET value +
  465.     branch SWAP PUT
  466.     'Wlist' STO
  467.   \>>
  468. \>>
  469.  
  470. putM
  471. \<< \-> n1 n2 n3 n4 l1 l2 m b1 b2
  472.   \<<
  473.     n1 n2 l1 b1 putL
  474.     n3 n4 l2 b2 putL
  475.     b1 b2 m putm
  476.   \>>
  477. \>>
  478.  
  479. putm
  480. \<< \-> b1 b2 m
  481.   \<<
  482.     m b1 b2 checknodes
  483.     C
  484.     b1 b2 m NEG putmatrix
  485.     b2 b1 m NEG putmatrix
  486.     'C' STO
  487.   \>>
  488. \>>
  489.  
  490. putS
  491. \<< \-> n1 n2 b
  492.   \<<
  493.     n1 n2 0 b putL
  494.   \>>
  495. \>>
  496.  
  497. putT
  498. \<< \-> n1 n2 n3 n4 ll Zo
  499.   \<<
  500.     ll 2 \135 * * \->NUM \-> gamma
  501.     \<<
  502.       ll n1 n3 checknodes
  503.       IF
  504.       n2 n4 \139
  505.       THEN
  506.         "n2 MUST EQUAL n4 IN T" DOERR
  507.       ELSE
  508.         'INV(i*Zo*SIN(gamma))' \->NUM
  509.         Cc
  510.         n1 n3 4 PICK puty2
  511.         SWAP
  512.         'COS(gamma)-1' \->NUM *
  513.         SWAP
  514.         n1 n2 4 PICK puty2
  515.         n3 n4 4 ROLL puty2
  516.         'Cc' STO
  517.       END
  518.     \>>
  519.   \>>
  520. \>>
  521.  
  522. putg
  523. \<< \-> n1 n2 n3 n4 value
  524.   \<<
  525.     value n2 n1 checknodes
  526.     value n3 n4 checknodes
  527.     G
  528.     n1 n2 n3 n4 value putg2
  529.     'G' STO
  530.   \>>
  531. \>>
  532.  
  533. putr
  534. \<< \-> n1 n2 n3 n4 val b1 b2
  535.   \<<
  536.     b1 n2 n1 checknodes
  537.     n1 n2 b1 putS             @ Short circuit
  538.     n3 n4 val b1 b2 putp
  539.   \>>
  540. \>>
  541.  
  542. putp
  543. \<< \-> n3 n4 val b1 b2
  544.   \<<
  545.     val n3 n4 checknodes
  546.     G
  547.     b2 n3 1 putmatrix
  548.     b2 n4 -1 putmatrix
  549.     b2 b1 val NEG putmatrix
  550.     n3 b2 1 putmatrix
  551.     n4 b2 -1 putmatrix
  552.     'G' STO
  553.   \>>
  554. \>>
  555.  
  556. putu
  557. \<< \-> n1 n2 n3 n4 value branch
  558.   \<<
  559.     value n2 n1 checknodes
  560.     branch n3 n4 checknodes
  561.     G
  562.     branch n1 value NEG putmatrix
  563.     branch n2 value putmatrix
  564.     branch n3 1 putmatrix
  565.     branch n4 -1 putmatrix
  566.     n3 branch 1 putmatrix
  567.     n4 branch -1 putmatrix
  568.     'G' STO    
  569.   \>>
  570. \>>
  571.  
  572. puta
  573. \<< \-> n1 n2 n3 n4 val branch
  574.   \<<
  575.     val n2 n1 checknodes
  576.     n1 n2 branch putS         @ Short circuit
  577.     n3 n4 val branch putb
  578.   \>>
  579. \>>
  580.  
  581. putb
  582. \<< \-> n3 n4 val branch
  583.   \<<
  584.     val n3 n4 checknodes
  585.     G
  586.     n3 branch val putmatrix
  587.     n4 branch val NEG putmatrix    
  588.     'G' STO    
  589.   \>>
  590. \>>
  591.  
  592. putO
  593. \<< \-> n1 n2 n3 n4 branch
  594.   \<<
  595.     1 n2 n1 checknodes
  596.     1 n3 n4 checknodes
  597.     G
  598.     branch n1 1 putmatrix
  599.     branch n2 -1 putmatrix
  600.     n3 branch 1 putmatrix
  601.     n4 branch -1 putmatrix
  602.     'G' STO
  603.   \>>
  604. \>>
  605.  
  606. putY
  607. \<< \-> n1 n2 value
  608.   \<<
  609.     value n2 n1 checknodes
  610.     Cc
  611.     n1 n2 value puty2
  612.     'Cc' STO
  613.   \>>
  614. \>>
  615.  
  616. puty
  617. \<< \-> n1 n2 n3 n4 y11 y12 y21 y22
  618.   \<<
  619.     y11 n2 n1 checknodes
  620.     y22 n2 n1 checknodes
  621.     Cc
  622.     n1 n2 y11 puty2
  623.     n3 n4 y22 puty2
  624.     n1 n2 n3 n4 y21 putg2
  625.     n3 n4 n1 n2 y12 putg2
  626.     'Cc' STO
  627.   \>>
  628. \>>
  629.  
  630. putL
  631. \<<
  632.  'C' putRL
  633. \>>
  634.  
  635. putL2
  636. \<< \-> n1 n2 branch
  637.   \<<
  638.     G
  639.     n1 branch 1 putmatrix
  640.     n2 branch -1 putmatrix
  641.     branch n1 1 putmatrix
  642.     branch n2 -1 putmatrix
  643.     'G' STO
  644.   \>>
  645. \>>
  646.  
  647. putg2
  648. \<< \-> n1 n2 n3 n4 value
  649.   \<<
  650.     n3 n1 value putmatrix
  651.     n4 n2 value putmatrix
  652.     n3 n2 value NEG putmatrix
  653.     n4 n1 value NEG putmatrix
  654.   \>>
  655. \>>
  656.  
  657. puty2
  658. \<< \-> n1 n2 value
  659.   \<<
  660.     n1 n1 value putmatrix
  661.     n2 n2 value putmatrix
  662.     n1 n2 value NEG putmatrix
  663.     n2 n1 value NEG putmatrix
  664.   \>>
  665. \>>
  666.  
  667. putmatrix
  668. \<< \-> row col val
  669.   \<<
  670.     IF
  671.     row col AND
  672.     THEN
  673.        row col getpos
  674.        DUP2                   @ matrix in level two
  675.        GET val +
  676.        PUT
  677.     END
  678.   \>>
  679. \>>
  680.  
  681. incbdim                       @ Increase matrix dimension
  682. \<< \-> cmptype               @ (branch)
  683.   \<<
  684.     IF
  685.     cmptype 'E' SAME
  686.     cmptype 'R' SAME OR
  687.     cmptype 'L' SAME OR
  688.     cmptype 'S' SAME OR
  689.     cmptype 'O' SAME OR
  690.     cmptype 'u' SAME OR
  691.     cmptype 'a' SAME OR
  692.     cmptype 'p' SAME OR
  693.     THEN
  694.        bdim 1 + 'bdim' STO
  695.     ELSE
  696.        IF
  697.        cmptype 'M' SAME
  698.        cmptype 'r' SAME OR
  699.        THEN
  700.           bdim 2 + 'bdim' STO
  701.        END
  702.     END
  703.   \>>
  704. \>>
  705.  
  706. incndim                       @ Increase matrix dimension
  707. \<< \-> x                     @ (node)
  708.   \<<
  709.     IF
  710.     x ndim >
  711.     THEN
  712.        x 'ndim' STO
  713.     END
  714.   \>>
  715. \>>
  716.  
  717. checknodes
  718. \<< \-> value n2 n1
  719.   \<<
  720.     CASE
  721.        n1 0 <
  722.        n2 0 < OR
  723.        THEN
  724.           "NEGATIVE NODE NO." DOERR
  725.        END
  726.  
  727.        n1 n2 ==
  728.        THEN
  729.           "BOTH NODES SAME" DOERR
  730.        END
  731.  
  732.        value 0 SAME
  733.        THEN
  734.           "ZERO VALUE OR BRANCH" DOERR
  735.        END
  736.     END
  737.   \>>
  738. \>>
  739.  
  740. getn34
  741. \<<
  742.  3 PICK 4 GET
  743.  4 PICK 5 GET
  744. \>>
  745.  
  746. getval
  747. \<<
  748.  3 PICK 4 GET
  749. \>>
  750.  
  751. getvb1b2
  752. \<<
  753.  getn34
  754.  5 PICK 6 GET
  755. \>>
  756.  
  757. getn34vb
  758. \<<
  759.  getvb1b2
  760.  6 PICK 7 GET
  761. \>>
  762.  
  763. getn34v1234
  764. \<<
  765.  getn34vb
  766.  7 PICK 8 GET
  767.  8 PICK 9 GET
  768. \>>
  769.  
  770. getbranch
  771. \<<
  772.  4 PICK 5 GET
  773. \>>
  774.  
  775. getpos
  776. \<<
  777.  2 \->LIST
  778. \>>
  779.  
  780. View                          @ Stack-View application
  781. \<<
  782.  PICT RCL \-> pict
  783.   \<<
  784.     PICT PURGE 1
  785.     DEPTH 1 - 10 MIN
  786.     DUP
  787.     IF
  788.       8 >
  789.     THEN # 6d 1
  790.     ELSE # 8d 2
  791.     END \-> rowht tsize
  792.     \<<
  793.       FOR I
  794.         PICT # 0d 65 I rowht * -
  795.         2 \->LIST I \->STR ": "
  796.         + I 3 + PICK \->STR +
  797.         tsize \->GROB GOR
  798.       NEXT
  799.       { } PVIEW pict
  800.       PICT STO
  801.     \>>
  802.   \>>
  803. \>>
  804.  
  805. CV
  806. \<< \-> node
  807.   \<<
  808.     X node GET
  809.   \>>
  810. \>>
  811.  
  812. CI
  813. \<< \-> branch
  814.   \<<
  815.     X branch GET
  816.   \>>
  817. \>>
  818.  
  819. CLRSC                         @ Clears the screen
  820. \<<
  821.  ERASE
  822. \>>
  823.  
  824. A\->L
  825. \<<
  826.  ARRY\-> DROP 4 \->LIST
  827. \>>
  828.  
  829. CIR\->
  830. \<<
  831.  LIST\-> DROP
  832. \>>
  833.  
  834. \->CIR
  835. \<<
  836.  DEPTH \->LIST
  837. \>>
  838.  
  839. MTXSLV                        @ Solves a matrix equation Ax=B
  840. \<< \-> B A                   @ Increased accuracy (iteration)
  841.   \<<
  842.     B A / B A
  843.     3 PICK RSD A / +
  844.   \>>
  845. \>>
  846.  
  847. @ -------------------------------------------------------------
  848. @               Default values and a sample circuit
  849.  
  850. CIR                           @ Sample circuit
  851. {
  852.  {E 1 0 'IFTE(t MOD 2 > 1,-1,1)' 4}
  853.  {E 3 0 'IFTE(CV(2) > 0,-1,1)' 5}
  854.  {G 1 2 10}
  855.  {C 2 0 2}
  856. }
  857.  
  858. ymin
  859. -1
  860.  
  861. ymax
  862. 1
  863.  
  864. node
  865. 2
  866.  
  867. w                             @ Angular frequency (omega)
  868. 0
  869.  
  870. t                             @ Time
  871. 0
  872.  
  873. Euler
  874. 1
  875.  
  876. END
  877.  
  878.